<?php
/*
	Function and class prefix: _
	Date: 14.02.2007

	Copyright 2006-2007  Alex Djachenko
	Authors: Alex Djachenko
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

    Принять участие в разработке или скачать новую версию вы можете на сайте
    http://code.google.com/p/my-site-framework/
*/

/**
 * Установка всей системы
 */
function setup_install_full()
{
	setup_echo("Начинаем установку/обновление\n",'none',true);
	// Отключаем лимиты
	setup_limitoff();
	// Создаем реестр модулей
	setup_install_modsdb();
	// Выполняем установку
	setup_install_modules();
	setup_echo("Установка/обновление завершены\n",'none',true);
}

/**
 * Установка всех модулей
 *
 * @param обработать не больше $limit модулей
 */
function setup_install_modules($limit=0)
{
	// Отключаем лимиты
	setup_limitoff();
	// Получаем список найденых модулей
	$mods = mst_modlist();
	$stat = array('error'=>0,'install'=>0,'upgrade'=>0,'nothing'=>0,'limit'=>$limit,'stop'=>false);
	// Устанавливаем модули из списа
	foreach ($mods as $this_mod)
	{
		// Проверяем, не задано ли лимита на количество устанавливаемых модулей
		if ($limit>0 AND ($stat['install']+$stat['upgrade'])>=$limit)
		{
			$stat['stop'] = true;
			break;
		}
		// Устанавливем модуль
		$res = setup_mod_install($this_mod);
		switch ($res)
		{
			case 'error':
				++$stat['error'];	
			break;
			case 'install':
				++$stat['install'];
			break;
			case 'upgrade':
				++$stat['upgrade'];
			break;
			case 'nothing':
				++$stat['nothing'];
			break;
			
		}
	}
	return $stat;

}




function setup_install_modsdb()
{
	$MT_mod_name = 'setup';
	// Создаем реестр установленных модулей
	if (!mst_modpath($MT_mod_name,'dat/modsinfo.dat',TRUE))
	{
		// Создаем папку
		setup_mkdatadir($MT_mod_name);
		// Создаем реестр установленных модулей
		$mod_info_path=mst_modpath($MT_mod_name,'dat/modsinfo.dat',FALSE,TRUE);
		$fp = fopen($mod_info_path,'x');
		fwrite($fp,serialize(array()));
		fclose($fp);
	}else
	{
		// Реестр модулей уже существует
		return true;
	}
	// Проверяем существование файла
	if ($filename = mst_modpath($MT_mod_name,'dat/modsinfo.dat',FALSE))
	{
		setup_echo("Успешно создан файл реестра модулей ({$filename})\n");
		return true;
	}else
	{
		setup_echo("Ошибка при создании файла реестра модулей ({$filename})\n",'error');
		error_log('Невозможно создать файл',"Невозможно создать файл реестра модулей ({$mod_info_path})");
		return false;
	}
}
?>